介紹
在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。
Q: 什麼是【物件】?
A:【物件】會包含以下這四個特性:
- 抽象(Abstraction)
- 封裝(Encapsulation)
- 繼承(Inheritance)
- 多型(Polymorphism)
抽象(Abstraction)
- 將真實世界的需求轉換成為OOP中的類別
-
類別可以包含狀態(屬性)與行為(方法)。
封裝(Encapsulation)
- 隱藏/保護內部實作的細節,並可以對屬性或方法設定存取層級(Public,Private,Protected)
繼承(Inheritance)
- 可以讓您建立新類別以重複使用、擴充和修改其他類別中定義的行為。
多型(Polymorphism)
- 在相同介面下,可以用不同的型別來實現。
- 多型有分成好幾種不同類型。
透過"繼承"來重複利用、擴充和修改基底類別的定義
在C#中所有類都是"多型"
- 在設計時期(Design Time)
-
基底類別可以定義和實作【虛擬】屬性或方法(virtual)
-
衍生類別可以【覆寫】這些虛擬的屬性或方法(override)
- 在執行時期(Runtime)
- 當呼叫基底類別的虛擬方法時,會改呼叫子類別覆蓋的方法
- 在C#中,所有類型都是多型類型
- 因為所有類型(包誇使用者定義的類型)都是繼承自Object
- 如果再C#中設計防止衍生類別覆蓋虛擬成員
-
public sealed override void Dowork(){}
- 多載(Overloading)比較有點爭議(有些人認為這不算多型)
程式開發的流程
第一步:
從需求或規格中進行"抽象化"的過程,透過"抽象化"過程定義出類別
第二步:
對實作的細節進行"封裝"(隱藏、保護)
第三步:
透過"繼承"來重複利用、擴充和修改基底類別的定義
參考資料
維基百科-物件導向
Udemy - 保哥SOLID 課程
本篇已同步發表至個人部落格
https://moushih.com/2022ithome10/